﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ControlPresupuesto
{
    public partial class FrmRegistrosContablesINFOR_CruzarCompromisos : Form
    {
        //private string periodoTemp = string.Empty;

        public FrmRegistrosContablesINFOR_CruzarCompromisos()
        {
            InitializeComponent();

            //--- IMPORTANTE!!!!!
            //--- El cruce de registro contables con los compromisos puede tardar mucho tiempo, por esa razon necesito colocar el atributo Adapter.SelectCommand.CommandTimeout = 0 en el adapter que realiza
            //--- dicha consulta, pero antes colocar este valor en cero, debo inicializar el adapter (por eso hago un fillby)
            this.spRegistroINFORDetalleTableAdapter.FillBy(
                this.controlPresupuestoDataSet.spRegistroINFORDetalle,
                "SelectRegistrosPorPeriodo",
                null, null, null, null, null,
                "000000",
                null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null
                );
            //--- Con lo siguiente seteo el valor del tiempo de espera
            this.spRegistroINFORDetalleTableAdapter.Adapter.SelectCommand.CommandTimeout = 0;
        }

        private void FrmRegistrosContablesINFOR_CruzarCompromisos_Load(object sender, EventArgs e)
        {
            // TODO: esta línea de código carga datos en la tabla 'controlPresupuestoDataSet.spRegistroINFORCabecera' Puede moverla o quitarla según sea necesario.
            this.spRegistroINFORCabeceraTableAdapter.Fill(this.controlPresupuestoDataSet.spRegistroINFORCabecera);

            //-- Blanquear Campos
            Utils.get().blanquearCampos(this);

            this.guardarButton.Enabled = false;
            this.cancelarButton.Enabled = false;
                
            this.controlPresupuestoDataSet.spRegistroINFORDetalle.Rows.Clear();
        }

        #region Eventos asociados a los botones del BindingNavigator

        private void exportar_Click(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;
            try { Utils.get().exportar(this.spRegistroINFORDetalleDataGridView); }
            catch (Exception ex) { MessageException.show(ex); }
            Cursor.Current = Cursors.Default;
        }

        private void actualizar_Click(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;
            ManageForms.reloadForm(this);
            Cursor.Current = Cursors.Default;
        }

        private void filter_Click(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;
            BindingSource bs = ((BindingNavigator)((ToolStripButton)sender).GetCurrentParent()).BindingSource;
            try
            {
                bs.RemoveFilter();
                this.toolStripTextBox1.Text = string.Empty;
            }
            catch (Exception ex)
            {
                MessageException.show(ex);
                bs.CancelEdit();
            }
            Cursor.Current = Cursors.Default;
        }

        private void filterText_TextChanged(object sender, EventArgs e)
        {

            Cursor.Current = Cursors.WaitCursor;
            BindingSource bs = ((BindingNavigator)((ToolStripTextBox)sender).GetCurrentParent()).BindingSource;
            DataTable table = ((DataSet)bs.DataSource).Tables[bs.DataMember];
            ToolStripTextBox tb = (ToolStripTextBox)sender;
            try
            {
                String filtro = "";
                foreach (DataColumn cl in table.Columns)
                {
                    filtro += "ISNULL(" + cl.ColumnName.ToString() + ",'')+' '+";
                }
                filtro = filtro.Substring(0, filtro.Length - 5);
                filtro += " like'%" + tb.Text + "%'";
                //MessageBox.Show(filtro);
                bs.Filter = filtro;
            }
            catch (Exception ex)
            {
                MessageException.show(ex);
                bs.CancelEdit();
            }
            Cursor.Current = Cursors.Default;
        }

        #endregion

        private void cancelarButton_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("¿Esta seguro que desea cancelar la operación?", "Confirmacion", MessageBoxButtons.YesNo) == DialogResult.No)
            {
                return;
            }
            FrmRegistrosContablesINFOR_CruzarCompromisos_Load(null, null);    
        }

        private void guardarButton_Click(object sender, EventArgs e)
        {
            if (this.PeriodoBuscadorAWIL.AWIL_Texto.Trim() == string.Empty || !this.PeriodoBuscadorAWIL.AWIL_ValorCorrecto)
            {
                this.controlPresupuestoDataSet.spRegistroINFORDetalle.Rows.Clear();
                this.guardarButton.Enabled = false;
                this.cancelarButton.Enabled = false;
                return;
            }

            try
            {
                this.spRegistroINFORDetalleBindingSource.RemoveFilter();
                this.toolStripTextBox1.Text = string.Empty;

                ControlPresupuestoDataSet.spRegistroINFORDetalleDataTable table = new ControlPresupuestoDataSet.spRegistroINFORDetalleDataTable();
                this.spRegistroINFORDetalleTableAdapter.Adapter.SelectCommand.CommandTimeout = 0;
                this.spRegistroINFORDetalleTableAdapter.FillBy(
                    table,
                    "GuardarRegistrosCruceCompromisosPorPeriodo",
                    Utils.get().dataGridViewToXML(this.spRegistroINFORDetalleDataGridView),
                    null,
                    null,
                    null,
                    null,
                    this.PeriodoBuscadorAWIL.AWIL_Texto.Trim(),
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null
                    );

                MessageBox.Show("Operacion Realizada con Exito!");
                //this.controlPresupuestoDataSet.spRegistroINFORDetalle.Rows.Clear();
                this.guardarButton.Enabled = false;
                this.cancelarButton.Enabled = false;
                //this.periodoTemp = string.Empty;
                //this.PeriodoBuscadorAWIL_Leave(null, null);    
                this.consultarButton_Click(null, null);
            }
            catch (Exception ex)
            {
                MessageException.show(ex);
            }
        }

        private void consultarButton_Click(object sender, EventArgs e)
        {
            if (this.PeriodoBuscadorAWIL.AWIL_Texto.Trim() == string.Empty || !this.PeriodoBuscadorAWIL.AWIL_ValorCorrecto)
            {
                this.controlPresupuestoDataSet.spRegistroINFORDetalle.Rows.Clear();
                this.guardarButton.Enabled = false;
                this.cancelarButton.Enabled = false;
                return;
            }

            try
            {
                Cursor.Current = Cursors.WaitCursor;
                //this.spRegistroINFORDetalleTableAdapter.Adapter.SelectCommand.CommandTimeout = 0;
                this.spRegistroINFORDetalleTableAdapter.FillBy(
                    this.controlPresupuestoDataSet.spRegistroINFORDetalle,
                    "SelectRegistrosCruceCompromisosPorPeriodo",
                    null,
                    null,
                    null,
                    null,
                    null,
                    this.PeriodoBuscadorAWIL.AWIL_Texto.Trim(),
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null
                    );

                this.guardarButton.Enabled = true;
                this.cancelarButton.Enabled = true;

                //--- Bloqueo los registros que ya tienen asignado un CodCompromiso y le cambio el color
                /*
                foreach (DataGridViewRow row in this.spRegistroINFORDetalleDataGridView.Rows)
                {
                    if (int.Parse(row.Cells["Id"].Value.ToString()) < 0)
                    {
                        row.DefaultCellStyle.BackColor = Color.LightBlue;
                        row.ReadOnly = true;
                    }
                    else
                    {
                        row.ReadOnly = false;
                    }
                }
                */
            }
            catch (Exception ex)
            {
                MessageException.show(ex);
            }
            Cursor.Current = Cursors.Default;
        }

        private void spRegistroINFORDetalleDataGridView_Sorted(object sender, EventArgs e)
        {
            /*
            //--- Bloqueo los registros que ya tienen asignado un CodCompromiso y le cambio el color
            foreach (DataGridViewRow row in this.spRegistroINFORDetalleDataGridView.Rows)
            {
                if (int.Parse(row.Cells["Id"].Value.ToString()) < 0)
                {
                    row.DefaultCellStyle.BackColor = Color.LightBlue;
                    row.ReadOnly = true;
                }
                else
                {
                    row.ReadOnly = false;
                }
            }
             */
        }

    }
}
